In order to implement communication fault tolerance, and in some cases increase data throughput, a computer system may couple to a network by way of a plurality of communication ports (hereinafter just ports), with the ports either implemented on a single network interface card (NIC) or the ports implemented on multiple NICs. The communication ports are “teamed” such that, regardless of the actual number of ports, the ports appear as a single port to application level programs.
In some cases, a primary port both sends and receives all communication packets, with the non-primary ports idled until such time as the primary port experiences a fault. In the case of a fault, one of the non-primary ports becomes primary, and the new primary sends and receives all communication packets. In other cases, when all the ports have the same bandwidth capability, message packets transmitted to clients on the network are distributed across the ports. However, transmit load balancing in situations where the ports have differing bandwidth capabilities, or where ports with the same bandwidth capabilities have differing connectivity the network, is not attempted. If a port has diminished capability (either because of its design or its connectivity to the network), the port is not used.